#pragma once
/*
@author TriLVH
@description management contra state
*/
#include "ContraStateInterface.h"
#include "ContraStateOnLand.h"
#include "ContraStateInWater.h"
#include "ContraStateLandWater.h"
#include "ContraStateDead.h"

#include "ContraData.h"

class ContraState {

private:
	/* Pointer to contra data */
	ContraData* _data;
	ContraStateInterface* _currentState;
	ContraStateDead* _stateDead;
	ContraStateInWater* _stateInWater;
	ContraStateOnLand* _stateOnLand;
	ContraStateLandWater* _stateLandWater;
public:
	/* Constructor to map contra data from contra entity*/
	ContraState(ContraData* data);

	/* Contra stand state */
	void stand();

	/* Contra stand up state */
	void standUp();

	/* Contra move right state */
	void moveRight();

	/* Contra move left state */
	void moveLeft();

	/* Contra fire state */
	void fire();

	/* Contra sit state*/
	void sit();

	/* Contra update state */
	void update();

	/* Draw current contra state */
	void draw(long time);

	/* Contra fly state */
	void fly();

	void setState(int state);
};